package univ.lille1.fr.car.manager;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.persistence.PersistenceContext;
import javax.persistence.TypedQuery;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;

import univ.lille1.fr.car.ejb.Utilisateur;

public class UtilisateurManager {
	private static final String PERSISTENCE_UNIT_NAME = "LibraryDB";
	private EntityManagerFactory entityManagerFactory;

	@PersistenceContext
	private EntityManager entityManager;
	private CriteriaBuilder criteriaBuilder;

	public UtilisateurManager() {
		entityManagerFactory = Persistence
				.createEntityManagerFactory(PERSISTENCE_UNIT_NAME);
		entityManager = entityManagerFactory.createEntityManager();
	}

	public void init() {
		Utilisateur utilisateur1 = new Utilisateur("toto", "toto");

		entityManager.getTransaction().begin();
		entityManager.persist(utilisateur1);
		entityManager.getTransaction().commit();
	}
	
	public List<Utilisateur> findAll() {
		criteriaBuilder = entityManagerFactory.getCriteriaBuilder();
		CriteriaQuery<Utilisateur> criteriaQuery = criteriaBuilder.createQuery(Utilisateur.class);
		Root<Utilisateur> utilisateur = criteriaQuery.from(Utilisateur.class);
		criteriaQuery.select(utilisateur);
		TypedQuery<Utilisateur> typedQuery = entityManager.createQuery(criteriaQuery);
		return typedQuery.getResultList();
	}
}
